#include "Scene0.h"
#include "Director.h"
#include "TheaterBase.h"
#include "Player.h"
#include "Dandelion.h"

DAISY::SceneFactoryPtr scene = DAISY::SceneFactoryPtr(new Branch1Scene0Factory());
DAISY::ActorFactoryPtr actor = DAISY::ActorFactoryPtr(new Branch1PlayerFactory());
DAISY::DirectorFactoryPtr director = DAISY::DirectorFactoryPtr(new DAISY::DirectorBaseFactory());
DAISY::TheaterFactoryPtr theater = DAISY::TheaterFactoryPtr(new DAISY::TheaterBaseFactory());
DAISY::ActorFactoryPtr actor_dandelion = DAISY::ActorFactoryPtr(new Branch1DandelionFactory());

extern "C" void dllStartPlugin(void)
{

	using namespace DAISY;
	GameFactories::getInstance().addSceneFactory(scene.get()); 
	GameFactories::getInstance().addTheaterFactory(theater.get());
	GameFactories::getInstance().addDirectorFactory(director.get());
	GameFactories::getInstance().addActorFactory(actor.get());
	GameFactories::getInstance().addActorFactory(actor_dandelion.get());
}

extern "C" void dllStopPlugin(void)
{
	using namespace DAISY;
	GameFactories::getInstance().removeSceneFactory(scene.get()); 
	GameFactories::getInstance().removeDirectorFactory(director.get());
	GameFactories::getInstance().removeTheaterFactory(theater.get());
	GameFactories::getInstance().removeActorFactory(actor.get());
	GameFactories::getInstance().removeActorFactory(actor_dandelion.get());
}